$filePath = "E:\WPSDrive\300657811\WPS云盘\党建2024年\花名册-海澜社区(使用excel对党员进行管理)2024年12月.xlsx"
$searchValue = "李  丹"

# 创建Excel应用程序对象
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false # 不显示Excel窗口

# 打开工作簿
$workbook = $excel.Workbooks.Open($filePath)

# 假设我们只处理第一个工作表
$worksheet = $workbook.Sheets.Item(1)

# 获取工作表的用数据区域
$dataRange = $worksheet.UsedRange

$found = $false

for ($row = 2; $row -le $dataRange.Rows.Count; $row++) {
    if ($found) { break } # 检查标志变量，如果为真则跳出外层循环

    # 获取当前行第二列的值
    $cellValue = $worksheet.Cells.Item($row, 2).Text.Trim()

    # 如果找到了匹配项
    if ($cellValue -eq $searchValue) {
        # 输出整行的数据
        for ($col = 1; $col -le 23; $col++) {
            Write-Host ($worksheet.Cells.Item($row, $col).Text)
        }
        $found = $true # 设置标志变量为真
        break # 跳出内层循环
    }
}

# 关闭工作簿和Excel应用程序
$workbook.Close($false) # 不保存更改
$excel.Quit()

# 清理COM对象
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($worksheet) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
[GC]::Collect()
[GC]::WaitForPendingFinalizers()